package atndTwitter

import org.scalatra.ScalatraFilter

import scala.util.control.Exception._

class Front extends ScalatraFilter{
	
	private def getInt(key:String):Option[Int] =
		for{
			v <- params.get(key)
			i <- catching(classOf[NumberFormatException]).opt(v.toInt)
		} yield i

		
	get("/*"){

		params.get("screenName") match{
			case Some(name) => {
				<html>
				<head>
					<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
					<title>{name}さんがfollowしてる人が参加してるイベント一覧</title>
					<style type="text/css">
					</style>
				</head>
				<body><dl>{for{
  				friend <- TwitterUtil.getFriends(name,getInt("count").getOrElse(50))
					val events = EventSearch.search(twitterId = Seq(friend.screenName) ).events
					if ! ( events.isEmpty || friend.screenName.isEmpty)
					val dummy = println(friend.screenName,events.map{_.title})
				}yield {
					<dt><a href={"http://twitter.com/" +friend.screenName}>{friend.screenName}</a></dt>
					<dd>
					  <ul>
						 {events.map{ e =>
					    <li>
						 		<a href={e.url}>{e.title}</a><br />
						 		<a href={e.eventUrl}>ATNDへ</a>
						 		<dl>
						 			<dt>開始日時</dt>
						 			<dd>{e.startedAt.map{_.toString("yyyy-MM-dd")}.getOrElse("設定なし?")}</dd>
						 			<dt>終了日時</dt>
						 			<dd>{e.endedAt.map{_.toString("yyyy-MM-dd")}.getOrElse("設定なし?")}</dd>
						 			<dt>場所</dt>
						 			<dd>{e.place}</dd>
						 			<dt>定員</dt>
						 			<dd>{e.limit.getOrElse("設定なし?")}</dd>
						 			<dt>参加人数</dt>
						 			<dd>{e.accepted}</dd>
						 			<dt>補欠人数</dt>
						 			<dd>{e.waiting}</dd>
						 		</dl>
						 	</li>
						 }}
					  </ul>
					</dd>
				}}</dl>
				<p style="font-size:small;float:right;">
					<a href="http://code.google.com/p/atnd-twitter">ソースコードこのへんに置いてあったり</a>
					<img src="http://code.google.com/appengine/images/appengine-silver-120x30.gif" alt="Powered by Google App Engine" /> 
					<span>Developing by</span>
					<a href="http://twitter.com/#!/xuwei_k"  target="_blank">xuwei_k</a> 
				</p> 
				</body></html>
			}
			case _ => "invalid parameter"
		}
	}
	
}